from django.shortcuts import render
from rest_framework.viewsets import ReadOnlyModelViewSet
from .models import Area
from .serializers import AreaSerializer,SubAreaSerializer
from rest_framework_extensions.cache.mixins import ListCacheResponseMixin,RetrieveCacheResponseMixin,CacheResponseMixin

# Create your views here.
# ListCacheResponseMixin,           get list方法      缓存列表
# RetrieveCacheResponseMixin,       get retrieve方法  缓存详情
# CacheResponseMixin                                缓存列表和详情

class AreaModelViewSet(CacheResponseMixin,ReadOnlyModelViewSet):

    """
    思路:

    1. 等地址页面出现的时候 首先应该加载省份信息   省份信息的数据 parent = None
    # 获取省份信息的时候 不需要传递id
    GET areas/infos/

    2. 当我点击省份信息之后, 需要根据省份信息 获取市的信息      parent=id
    3. 当我点击市信息之后, 需要根据市信息 获取区(县)的信息      parent=id
    #获取 市, 区(县) 信息 需要传递id
    GET areas/infos/id/
    """

    #因为 我们的省份数据 和 区县数据获取方式不一致
    # 返回的JSON也不一致
    # 所以需要 使用 重新方法
    # queryset =
    #
    # serializer_class =

    def get_queryset(self):

        #省份信息       list 方法
        #市, 区(县)     retrieve
        if self.action == 'list':
            # 省份信息需要我们自己手动查询
            return  Area.objects.filter(parent=None)
        else:
            # 因为我们的视图集可以根据id查询到指定数据,所以我们把所有数据给它就行
            return Area.objects.all()


    def get_serializer_class(self):

        if self.action == 'list':
            #省份序列化器
            return AreaSerializer
        else:
            # 市 区县
            return SubAreaSerializer

